<template>
  <div id="demo" style="width: 900px;height:800px;"></div>
</template>

<script>
import * as echarts from 'echarts';
export default {
  data() {
    return {
      data: [],
      nameList : [
        '赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁', '杜', '阮', '蓝', '闵', '席', '季', '麻', '强', '贾', '路', '娄', '危']
    };
  },
  //created钩子函数：‌在组件实例被创建后立即调用。‌在这个阶段，‌Vue实例已经完成了数据观测，‌但尚未渲染真实的DOM。‌
  // 这意味着你可以访问实例中的数据、‌方法、‌计算属性等，‌但不能保证实例已经被插入到DOM中。
  // created钩子函数常用于一些初始化操作，‌例如数据请求、‌事件监听或其他非DOM相关的任务。‌因为此时，‌组件的模板还未被编译成真实DOM。‌

  // mounted钩子函数：‌在组件被挂载到DOM后调用。‌在mounted钩子函数中，‌Vue实例已经完成了模板编译，‌并且已经将生成的虚拟DOM渲染到真实DOM中。
  // mounted常用于需要对DOM进行操作的任务，‌例如初始化第三方库、‌绑定事件监听器、‌执行动画等。‌因为此时，‌组件已经被插入到DOM中，‌可以安全地访问和操作DOM元素。‌
  created() {
    // this.loadDataAndDrawChart();
  },
  methods: {
    async loadDataAndDrawChart() {
      // this.drawChart(); // 数据加载完成后执行绘制图表的操作
    },

    //绘制数据
    drawChart() {

      var myChart = echarts.init(document.getElementById('demo'));
      var option;

      this.genData(50);
      // 打印后 可得到两个对象 一个存储名字 一个存储名字和数量
      console.log(this.data)

      option = {
        title: {
          text: '同名数量统计',
          subtext: '纯属虚构',
          left: 'center'
        },
        tooltip: {
          trigger: 'item',
          formatter: '{a} <br/>{b} : {c} ({d}%)'
        },
        legend: {
          type: 'scroll',
          orient: 'vertical',
          right: 10,
          top: 20,
          bottom: 20,
          data: this.data.legendData
        },
        series: [
          {
            name: '姓名',
            type: 'pie',
            radius: '55%',
            center: ['40%', '50%'],
            data: this.data.seriesData,
            emphasis: {
              itemStyle: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: 'rgba(0, 0, 0, 0.5)'
              }
            }
          }
        ]
      }
      myChart.setOption(option)
    },
    genData(count) {
      // prettier-ignore

      const legendData = [];
      const seriesData = [];
      for (var i = 0; i < count; i++) {
        var name =
            Math.random() > 0.65
                ? this.makeWord(4, 1) + '·' + this.makeWord(3, 0)
                : this.makeWord(2, 1);
        legendData.push(name);
        seriesData.push({
          name: name,
          value: Math.round(Math.random() * 100000)
        });
        this.data = {
          'legendData':legendData,
          'seriesData':seriesData
        };
      }
    },
    makeWord(max, min) {
      const nameLen = Math.ceil(Math.random() * max + min);
      const name = [];
      for (var i = 0; i < nameLen; i++) {
        name.push(this.nameList[Math.round(Math.random() *this.nameList.length - 1)]);
      }
      return name.join('');

    }
  }
}
</script>

